package larkvadcheck.com.jniapplication;

import java.util.Random;
import java.util.UUID;

/**
 * Created by Mr.Left on 2017/7/12.
 */

public class JNITestHelper {

    // Used to load the 'native-lib' library on application startup.
//   static {
//        System.loadLibrary("jniTest1");
//        System.loadLibrary("jniTest2");
//   }
    private static JNITestHelper instance;
    public static  JNITestHelper getInstance()
    {
        if (instance==null){
            System.loadLibrary("jniTest");
            instance=new JNITestHelper();
        }
         return instance;
    }
    public  native String stringFromJNI();
    public  native String setStr(String str);
    public native int getIntNum(int num);
    public  native String stringFromJNI2();

    //C实现数组从小到大的排序
    public  native void sortArray(int arr[]);

    //全局引用 主要作用：共享(可以跨多个线程)，手动控制内存使用。
    //创建//获取//删除JNI全局引用。
    public native void createGlobalRef();
    public native String getGlobalRef();
    public native void deteleGlobalRef();

//    C/C++访问Java的属性、方法
    public String str = "Amy";
    //访问非静态属性str，修改它的值
    public native void accessField();


    //访问静态属性NUM，修改它的值
    public static int NUM = 1;
    public native void accessStaticField();

    //访问Java的非静态方法 产生指定范围的随机数
    public int genRandomInt(int max){
        System.out.println("genRandomInt 执行了...max = "+ max);
        return new Random().nextInt(max);
    }
    public native int accessMethod();


    //访问Java的静态方法
    public native String accessStaticMethod();
    //产生UUID字符串
    public static String getUUID(){
        System.out.println("getUUID 执行了...");
        return UUID.randomUUID().toString();
    }

    //JNI返回中文乱码问题
    public native String testChineseOut();//取出来会乱码

}
